(function(){
  

    var root = this
    var previousUnderscore = root._;
    var ArrayProto = Array.prototype;
    var ObjProto = Object.prototype;
    var SymbolProto = typeof Symbol !== 'undefined' ? Symbol.prototype : null;
    var push = ArrayProto.push,
        slice = ArrayProto.slice,
        toString = ObjProto.toString,
        hasOwnProperty = ObjProto.hasOwnProperty;
    var _ = function(obj){
       if(obj instanceof _) return obj;
       if(!(this instanceof _)) return new _(obj)
       this._wrappend = obj;
    }
    root._ = _;
    _.hello = function(obj){
        console.log('hello,' + obj)
    }
    // if (typeof define == 'function' && define.amd) {
    //     define('underscore', [], function() {
    //       return _;
    //     });
    //   }
    return _


}())